﻿

Public Class AdminPAQ_Comercial

    Public Const kTokenSeparadorSACICOM = "¬"
    Enum TIPO_DOCUMENTO_COMERCIAL
        Ventas = 1
        Compras = 2
        Otro = 3

    End Enum
    Function EnviaComercial(ByVal Fecha As Date, ByVal CodigoConcepto As String, ByVal Folio As Integer, ByVal Serie As String, ByVal CodigoCte As String, ByVal RazonSo As String, ByVal CodigoAgente As String, ByVal CodigoProd As String, ByVal CodigoAlm As String, ByVal Unidades As Double, ByVal Precio As Double, ByVal Tipo As TIPO_DOCUMENTO_COMERCIAL)
        Dim lRet As Long
        Dim lError As Long
        'Dim lRenglon As Integer
        Dim lStrValor As String
        Dim lDoctoDe As Integer
        Dim lNumMovtos As Integer
        Dim lHayMovimientos As Boolean
        Dim lFechaDoc As String
        Dim lFechaVenc As String
        Dim lFechaEntr As String

        Dim lParametros As String

        Dim lTipo As Integer


        'Valida código de cliente
        lStrValor = CodigoCte
        If Trim(lStrValor) = "" Then
            MsgBox("Hubo un error al validar el codigo del cliente." & Chr(10) & Chr(10) & "Error no.: " & Trim("120501") & Chr(10) & "El código del Cliente/Proveedor no existe.", vbExclamation + vbOKOnly, "Error")
            Exit Function
        End If

        ' IdDocumentoDe
        lDoctoDe = fCalculaIdDocumentoDe(Tipo)


        ' Verifica que se hayan capturado movimientos
        ' lRenglon = 18
        lNumMovtos = 1

        If Tipo = TIPO_DOCUMENTO_COMERCIAL.Ventas Then
            lTipo = 1
            lParametros = "1"
        ElseIf Tipo = TIPO_DOCUMENTO_COMERCIAL.Compras Then
            lTipo = 2
            lParametros = "2"
        Else
            lTipo = 3
            lParametros = "3"
        End If

        lParametros = lParametros & kTokenSeparadorSACICOM & CStr(lNumMovtos) & kTokenSeparadorSACICOM & CStr(lDoctoDe)

        '_________________________________________________________________________________________________________________
        ' Actualiza los campos del documento
        lStrValor = Format(Fecha.Month, "00") & "/"
        lStrValor = lStrValor & Format(Fecha.Day, "00") & "/"
        lStrValor = lStrValor & Format(Fecha.Year, "0000")
        lFechaDoc = lStrValor
        lFechaVenc = lStrValor
        lFechaEntr = lStrValor

        lParametros = lParametros & kTokenSeparadorSACICOM & CStr(lFechaDoc)


        'CodigoConcepto = "9999"

        lParametros = lParametros & kTokenSeparadorSACICOM & BuscarStrDatoComercial("SELECT CNOMBRECONCEPTO FROM ADMCONCEPTOS WHERE CCODIGOCONCEPTO='" & CStr(CodigoConcepto) & "'")
        lParametros = lParametros & kTokenSeparadorSACICOM & Trim(Serie)
        lParametros = lParametros & kTokenSeparadorSACICOM & BuscarIntDatoComercial("SELECT CNOFOLIO FROM ADMCONCEPTOS WHERE CCODIGOCONCEPTO='" & CStr(CodigoConcepto) & "'") + 1


        'CodigoCteProv
        lParametros = lParametros & kTokenSeparadorSACICOM & CodigoCte

        'CodigoAgente
        lParametros = lParametros & kTokenSeparadorSACICOM & CodigoAgente

        lParametros = lParametros & kTokenSeparadorSACICOM & lFechaVenc

        lParametros = lParametros & kTokenSeparadorSACICOM & lFechaEntr

        lParametros = lParametros & kTokenSeparadorSACICOM & 1

        lParametros = lParametros & kTokenSeparadorSACICOM & 1

        ' lParametros = lParametros & kTokenSeparadorSACICOM & CodigoCte

        'CodigoAgente

        'Añade parámetros de movimientos


        ' Codigo del Producto

        ' Codigo del Producto
        lParametros = lParametros & kTokenSeparadorSACICOM & CodigoProd

        ' Codigo del Almacen
        lParametros = lParametros & kTokenSeparadorSACICOM & CodigoAlm

        ' Unidades
        lParametros = lParametros & kTokenSeparadorSACICOM & Unidades



        ' Precio
        lStrValor = Precio
        If lStrValor = "" Then lStrValor = "0"
        lParametros = lParametros & kTokenSeparadorSACICOM & lStrValor


        ' Descuento 1
        lStrValor = ""
        If lStrValor = "" Then lStrValor = "0"
        lParametros = lParametros & kTokenSeparadorSACICOM & lStrValor


        ' Descuento 2
        lStrValor = ""
        If lStrValor = "" Then lStrValor = "0"
        lParametros = lParametros & kTokenSeparadorSACICOM & lStrValor


        ' Impuesto 1
        lStrValor = ""
        If lStrValor = "" Then lStrValor = "0"
        lParametros = lParametros & kTokenSeparadorSACICOM & lStrValor


        ' Impuesto 2
        lStrValor = ""
        If lStrValor = "" Then lStrValor = "0"
        lParametros = lParametros & kTokenSeparadorSACICOM & lStrValor






        EnviaComercial = Inserta_Documento(lParametros, CodigoCte, lFechaDoc)





    End Function
    Function Inserta_Documento(ByVal aParametros As String, ByVal Cliente As String, ByVal Fecha As String)

        Dim lRutaEmpresa As String
        Dim lError As Long
        Dim Funcion As String
        Dim lResultado As String

        On Error GoTo Error_Inserta_Documento

        ' Validación de la empresa

        Dim DirectorioDatos As String = BuscarStrDatoInicial("SELECT RUTADATOS FROM EMPRESAS WHERE ADMINPAQ='" & Comercial & "'")

        lRutaEmpresa = DirectorioDatos

        If (Trim(lRutaEmpresa) = "") Then
            Exit Function
        End If

        Funcion = "Inserta_Documento"
        '  Call comComercialMain.ProcesarUnaFuncion(Funcion, aParametros, lRutaEmpresa, lResultado, lError)



        If lError <> 0 Then
            Inserta_Documento = "NO" & lResultado & ": " & Fecha & ": " & Cliente
            MsgBox("Hubo un error al guardar el documento." & Chr(10) & Chr(10) & "Error no.: " & Trim(Str(lError)) & Chr(10) & lResultado, vbExclamation + vbOKOnly, "Error")
            Exit Function
            ' Else
            'MsgBox("Documento creado con éxito.", vbInformation + vbOKOnly, "CONTPAQ i COMERCIAL")
        End If


        'TERMINA EL SDK
        'If Not (gTablas Is Nothing) Then
        'Call gTablas.TerminarComunicacion()
        'End If

        'If Not (comComercialMain Is Nothing) Then
        'Call comComercialMain.sistemaFinalizar(lResultado)
        'End If
        Inserta_Documento = "OK"

        Exit Function

Error_Inserta_Documento:
        MsgBox("Ocurrió un error al crear el documento.", vbExclamation + vbOKOnly, "Error")
        Inserta_Documento = "ERROR" & ": " & Fecha & ": " & Cliente
    End Function
    Function fCalculaIdDocumentoDe(ByVal tipo As TIPO_DOCUMENTO_COMERCIAL) As Integer
        Dim lNomDocModelo As String

        fCalculaIdDocumentoDe = 0

        lNomDocModelo = tipo
        Select Case lNomDocModelo
            ' Case "COTIZACIÓN"
            '    fCalculaIdDocumentoDe = 1
            'Case "PEDIDO"
            '   fCalculaIdDocumentoDe = 2
            '   Case "PRODUCTO EN CONSIGNACIÓN DEL CLIENTE"
            '      fCalculaIdDocumentoDe = 3
            Case TIPO_DOCUMENTO_COMERCIAL.Ventas
                fCalculaIdDocumentoDe = 4
                ' Case "ORDEN DE COMPRA"
                '        fCalculaIdDocumentoDe = 17
                '    Case "PRODUCTO EN CONSIGNACIÓN DEL PROVEEDOR"
                '        fCalculaIdDocumentoDe = 18
            Case TIPO_DOCUMENTO_COMERCIAL.Compras
                fCalculaIdDocumentoDe = 19
                '   Case "ENTRADAS AL ALMÁCEN"
                '       fCalculaIdDocumentoDe = 32
                '   Case "SALIDAS DEL ALMÁCEN"
                '       fCalculaIdDocumentoDe = 33
                '   Case "COTIZACIÓN DEL PROVEEDOR"
                '      fCalculaIdDocumentoDe = 38
        End Select
    End Function


End Class
